package com.example.demo;

import java.util.Random;
import java.util.Scanner;

/**
 * 目标：完成随机排名
 */
public class Test3 {
    public static void main(String[] args) {
        // 需求：某公司开发部5名开发人员,要进行项目进展汇报演讲,现在采取随机排名后进行汇报请先依次录入5名员工的工号,然后展示出一组随机的排名顺序
        // 1.定义一个动态初始化的数组用于存储5名员工的工号
        int[] codes = new int[5];
        // [0, 0, 0, 0, 0]
        //  0  1  2  3  4

        // 2.提示用户录入5名员工的工号
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < codes.length; i++) {
            // i = 0 1 2 3 4
            System.out.println("请您输入当前第" + (i + 1) +"个员工的工号：");
            int code = sc.nextInt();
            codes[i] = code;
        }

        // 3.打乱数组中的元素顺序
        // [12, 33, 54, 26, 8]
        //  i       index
        Random r =  new Random();
        for (int i = 0; i < codes.length; i++) {
            // 每遍历到一个数据,都随机一个数组索引范围内的值,然后让当前遍历的数据与该索引位置处的值交换
            int index = r.nextInt(codes.length); // 0 - 4
            // 定义一个临时变量记住index位置处的值
            int temp = codes[index];
            // 把i位置处的值赋值给index位置处
            codes[index] = codes[i];
            // 把index位置原来的值赋值给i位置处
            codes[i] = temp;
        }

        // 4.遍历数组中的工号输出即可
        for (int i = 0; i < codes.length; i++) {
            System.out.print(codes[i] + " ");
        }
    }
}
